//
// Description: 219. 存在重复元素 II
// Created by Loading on 2025/4/13.
//

#include <bits/stdc++.h>

using namespace std;

bool containsNearbyDuplicate(vector<int> &nums, int k) {
    unordered_set<int> s;

    for (int i = 0; i < nums.size(); ++i) {
        if (i > k) { // 滑动窗口长度超出k，移除窗口头部元素
            s.erase(nums[i - k - 1]);
        }
        if (!s.insert(nums[i]).second) { // 窗口内出现重复元素，满足条件
            return true;
        }
    }

    return false;
}

int main() {
    vector<int> nums{1, 2, 3, 1};
    int k = 3;

    auto res = containsNearbyDuplicate(nums, k);

    cout << res << endl;

    return 0;
}
